<?PHP
    require_once('ConnectionMysql.php');
    require_once('Postagem.php');

    class PostagemDAO
    {
        private $connection = NULL;


        /*************************************************************************
        * Name: __construct
        * Description: Construtor da Classe. Inicializar os Atributos.
        * Parameters: 
        * Returns: Nenhum
        * Author: 
        * Last Modified: 00/00/00 - Autor da Modificação
        *************************************************************************/
        public function __construct()
        {
            $this->connection = new ConnectionMysql(); // Cria a Conexão.
        }


        /*************************************************************************
        * Name: 
        * Description: 
        * Parameters: 
        * Returns: 
        * Author: 
        * Last Modified: 00/00/00 - Autor da Modificação
        *************************************************************************/
        public function insert(Postagem $obj)
        {
            $sql = "INSERT INTO postagem (titulo, descricao, conteudo, data, idUsuario, idCategoria, isAtivo)
                    VALUES ('". $obj->getTitulo() ."', '". $obj->getDescricao() ."', '". $obj->getConteudo() ."', '". $obj->getData() ."',".
                    $obj->getIdUsuario() .", ". $obj->getIdCategoria() .", '". $obj->getIsAtivo() ."')";
            
            $this->connection->queryConnect($sql);
        }


        /*************************************************************************
        * Name: 
        * Description: 
        * Parameters: 
        * Returns: 
        * Author: 
        * Last Modified: 00/00/00 - Autor da Modificação
        *************************************************************************/
        public function deletePorId($id)
        {
            $sql = "UPDATE postagem SET isAtivo='N' WHERE idPostagem=".$id;
            
            $this->connection->queryConnect($sql);
        }
        
        
        /*************************************************************************
        * Name: 
        * Description: 
        * Parameters: 
        * Returns: 
        * Author: 
        * Last Modified: 00/00/00 - Autor da Modificação
        *************************************************************************/
        public function deletePorObj(Postagem $obj)
        {
            $sql = "UPDATE postagem SET isAtivo='N' WHERE idPostagem=". $obj->getIdPostagem();
            
            $this->connection->queryConnect($sql);
        }


        /*************************************************************************
        * Name: 
        * Description: 
        * Parameters: 
        * Returns: 
        * Author: 
        * Last Modified: 00/00/00 - Autor da Modificação
        *************************************************************************/
        public function update(Postagem $obj)
        {
            $sql = "UPDATE postagem 
                   SET titulo='". $obj->getTitulo() ."', descricao='". $obj->getDescricao() ."', conteudo='". $obj->getConteudo() .
                   "', data='". $obj->getData() ."', idUsuario=". $obj->getIdUsuario() .", idCategoria=". $obj->getIdCategoria() .", isAtivo='". $obj->getIsAtivo().
                   "' WHERE idPostagem=". $obj->getIdPostagem();
            
            $this->connection->queryConnect($sql);
        }
        
        
        /*************************************************************************
        * Name: 
        * Description: 
        * Parameters: 
        * Returns: 
        * Author: 
        * Last Modified: 00/00/00 - Autor da Modificação
        *************************************************************************/
        public function selectVisualizarPostagem($id)
        {
            $sql = "SELECT titulo, descricao, conteudo, data, idUsuario, idCategoria FROM postagem 
                    WHERE isAtivo='S' AND idPostagem=". $id;
            
            $result = $this->connection->queryConnect($sql);
            
            if (mysql_num_rows($result) > 0)
            {
                $obj = new Postagem();
                $obj->getIdPostagem(mysql_result($result, 0, $id));
                $obj->getTitulo(mysql_result($result, 0, "titulo"));
                $obj->getDescricao(mysql_result($result, 0, "descricao"));
                $obj->getConteudo(mysql_result($result, 0, "conteudo"));
                $obj->getData(mysql_result($result, 0, "data"));
                $obj->getIdUsuario(mysql_result($result, 0, "idUsuario"));
                $obj->getIdCategoria(mysql_result($result, 0, "idCategoria"));
            
                return $obj;
            }
            else
            {
                return NULL;
            }
        }


        /*************************************************************************
        * Name: 
        * Description: 
        * Parameters: 
        * Returns: 
        * Author: 
        * Last Modified: 00/00/00 - Autor da Modificação
        *************************************************************************/
        public function selectPostagemPorCategoria($id)
        {
            $sql = "SELECT idPostagem, titulo, descricao, data, idUsuario FROM postagem 
                    WHERE idCategoria=". $id ." AND isAtivo='S'";
            $result = $this->connection->queryConnect($sql);
            
            if (mysql_num_rows($result) > 0)
            {
                $arrayObj = array();
                for ($i = 0; $i < mysql_num_rows($result); $i++)
                {
                    $arrayObj[$i] = new Postagem();
                    $arrayObj[$i]->setIdPostagem(mysql_result($result, $i, "idPostagem"));
                    $arrayObj[$i]->setTitulo(mysql_result($result, $i, "titulo"));
                    $arrayObj[$i]->setDescricao(mysql_result($result, $i, "descricao"));
                    $arrayObj[$i]->setData(mysql_result($result, $i, "data"));
                    $arrayObj[$i]->setIdUsuario(mysql_result($result, $i, "idUsuario"));
                    $arrayObj[$i]->setIdCategoria(mysql_result($result, $i, $id));
                }

                return $arrayObj;
            }
            else
            {
                    return NULL;
            }
        }
        
        
        /*************************************************************************
        * Name: 
        * Description: 
        * Parameters: 
        * Returns: 
        * Author: 
        * Last Modified: 00/00/00 - Autor da Modificação
        *************************************************************************/
        public function selectMaisRecentes($id = 2, $qtdRegistros = 3)
        {
            $sql = "SELECT idPostagem, titulo, descricao FROM postagem 
                    WHERE idCategoria=". $id ." AND isAtivo='S' ORDER BY data DESC LIMIT ". $qtdRegistros;
            $result = $this->connection->queryConnect($sql);
            
            if (mysql_num_rows($result) > 0)
            {
                $arrayObj = array();
                for ($i = 0; $i < mysql_num_rows($result); $i++)
                {
                    $arrayObj[$i] = new Postagem();
                    $arrayObj[$i]->setIdPostagem(mysql_result($result, $i, "idPostagem"));
                    $arrayObj[$i]->setTitulo(mysql_result($result, $i, "titulo"));
                    $arrayObj[$i]->setDescricao(mysql_result($result, $i, "descricao"));                    
                }

                return $arrayObj;
            }
            else
            {
                    return NULL;
            }
        }
        
        
        /*************************************************************************
        * Name: 
        * Description: 
        * Parameters: 
        * Returns: 
        * Author: 
        * Last Modified: 00/00/00 - Autor da Modificação
        *************************************************************************/
        public function selectMaisComentados($qtdRegistros = 3)
        {
            $sql = "SELECT count(*) AS qtdPorPostagem, c.idPostagem, p.Titulo, p.descricao
                    FROM comentario AS c
                    INNER JOIN postagem p
                    ON c.idPostagem = p.idPostagem
                    GROUP BY c.idPostagem
                    ORDER BY qtdPorPostagem
                    DESC LIMIT ". $qtdRegistros;
            $result = $this->connection->queryConnect($sql);
            
            echo "Qtd: ".$result[0][0];
            echo "teste: ".$result[0][1];
            /*
            if (mysql_num_rows($result) > 0)
            {
                $arrayObj = array();
                for ($i = 0; $i < mysql_num_rows($result); $i++)
                {
                    $arrayObj[$i] = new Postagem();
                    $arrayObj[$i]->setIdPostagem(mysql_result($result, $i, "idPostagem"));
                    $arrayObj[$i]->setTitulo(mysql_result($result, $i, "titulo"));
                    $arrayObj[$i]->setDescricao(mysql_result($result, $i, "descricao"));                    
                }

                return $arrayObj;
            }
            else
            {
                    return NULL;
            }*/
        }
        
        
        /*************************************************************************
        * Name: 
        * Description: 
        * Parameters: 
        * Returns: 
        * Author: 
        * Last Modified: 00/00/00 - Autor da Modificação
        *************************************************************************/
        public function select()
        {
            $sql = "";
            $this->connection->queryConnect($sql);
        }
    }
?>